package com.edu.scnu.show;

import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Panel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyListener;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.io.Closeable;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;

/**
 * @说明：游戏窗体 主要实现的功能为：关闭，显示，最大最小化
 * @author 14737
 * @功能说明：需要嵌入面板，启动主线程等
 * @窗体说明 swing awt 窗体大小 （记录用户上次使用软件的窗体样式）
 * @分析 1.面板绑定到窗体
 * 		2.监听绑定
 * 		3.游戏主线程启动
 * 		4.显示窗体
 */
public class GameJFrame extends JFrame{
	public static int GameX = 600; // GAMEX
	public static int GameY = 800; // GAMEY
	public static boolean gamerunning=false;
	private JPanel jPanel = null; // 正在实现的面板
	private JPanel mainPanel = null;
    public void setMainPanel(JPanel mainPanel) {
		this.mainPanel = mainPanel;
	}
	private CardLayout cardLayout = null;
    public void setCardLayout(CardLayout cardLayout) {
		this.cardLayout = cardLayout;
	}
	private JPanel menuPanel = null;
	public void setMenuPanel(JPanel menuPanel) {
		this.menuPanel = menuPanel;
	}
	private KeyListener keyListener = null; // 键盘监听
	private MouseMotionListener mouseMotionListener = null; // 鼠标监听
	private MouseListener mouseListener = null;
	
	/**
	 * 设置窗体属性
	 */
	public GameJFrame() {
		init();
	}
	public void init() {
		this.setSize(GameX, GameY); // 设置窗体大小
		this.setTitle("测试游戏-打飞机");
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 设置退出并且关闭
		this.setLocationRelativeTo(null); // 屏幕居中显示
		this.setResizable(false); // 禁止调整窗体大小
	}
	
	/* 窗体布局：可以将存档，读档。button 给对大家扩展用*/
	public void addButton() {
//		this.setLayout(manager); // 布局格式，可以添加控件
	}
	
	/**
	 * 启动方法
	 */
	public void start() {
		if(jPanel != null && menuPanel != null) {
			mainPanel.add(menuPanel, "Menu");
			mainPanel.add(jPanel, "Game");
			cardLayout.show(mainPanel, "Menu");
		    this.add(mainPanel);
		}
		if (keyListener != null) {
			this.jPanel.addKeyListener(keyListener);
		}
		this.setVisible(true); // 显示界面
	}
	
	/* set注入：等学习ssm通过set方法注入配置文件中读取的数据；
	 * 将配置文件中的数据赋值为类的属性
	 * 构造注入：需要配合构造方法
	 *  spring中ioc进对象的自动生成，管理
	*/
	public void setJpanel(JPanel jPanel) {
		this.jPanel = jPanel;
	}
	public void setKeyListener(KeyListener keyListener) {
		this.keyListener = keyListener;
	}
	public void setMouseMotionListener(MouseMotionListener mouseMotionListener) {
		this.mouseMotionListener = mouseMotionListener;
	}
	public void setMouseListener(MouseListener mouseListener) {
		this.mouseListener = mouseListener;
	}

	
}
